function addobserv(url){
	document.write("<script language=javascript src="+url+"></script>");
}
function depUrl(url){
	document.write("<script language=javascript src="+url+"></script>");
}

// addobserv('./observe.js')
depUrl('./Dep.js')
//这里observe的是val
 function defineReactive(obj,key,val){
     const dep=new Dep()  //为啥   getter 和setter中用得到
     //console.log('11111111111'+Dep.target)
    // console.log('我是defineReactive',obj,key)
     //子元素进行observe 至此行程了一个递归  这个递归当然不是函数自己调用自己 
     //而是多个函数或者类多次循环调用
     if(arguments.length==2){
         val=obj[key]
     }
   
    //  console.log(arguments)
    //  console.log('val val val')
    //  console.log(val)
    //  console.log('val val val')
     let childOb=observe(val)

    Object.defineProperty(obj,key,{
        get:function(){
           // console.log(`${obj}`+'的'+`${key}`+'属性')
            console.log(`${key}`+'属性get get')
             console.log('222222'+Dep.target)
           //如果现在处于依赖的收集阶段
           if(Dep.target){
               dep.depend()
               if(childOb){
                childOb.dep.depend()
               }
            }
            return val
        },
        set:function(newVal){
            //console.log(`${obj}`+'的'+`${key}`+'属性'+newVal)
            console.log(`${key}`+'属性 set set')
             if(newVal===val){
               return 
             }
              val=newVal
              //console.log(`${key}`+'的属性的值为'+`${val}`)
              //当设置了新值 这个新值也有observe
              childOb=observe(newVal)

              //发布订阅模式
              dep.notify()
        },
       
    })
    
}